﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using Entities;
using BLL.Validation;

namespace BLL
{
    public class HocPhiManager : IValidator<BienLai>
    {
        public static ActionResultAsList<BienLai> LayDanhSachBienLai()
        {
            var aResult = new ActionResultAsList<BienLai>();
            try
            {
                aResult.Result = HocPhiProvider.LayDanhSachBienLai();
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResultAsList<BienLai> TimDanhSachHocPhi(object objA, SoSanh ss)
        {
            var aResult = new ActionResultAsList<BienLai>();
            try
            {
                aResult.Result = HocPhiProvider.TimDanhSachHocPhi(objA, ss);
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<BienLai> TimhHocPhi(object objA, SoSanh ss)
        {
            var aResult = new ActionResult<BienLai>();
            try
            {
                aResult.Result = HocPhiProvider.TimHocPhi(objA, ss);
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResultAsList<BienLai> TimDanhSachHocPhiTheoNgay(object a, object b, SoTrongKhoang ss)
        {
            var aResult = new ActionResultAsList<BienLai>();
            try
            {
                aResult.Result = HocPhiProvider.TimDanhSachHocPhiTheoNgay(a, b, ss);
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }

        public static ActionResult<int> ThemHocPhi(BienLai hocphi)
        {
            var aResult = new ActionResult<int>();
            try
            {
                aResult.Result = HocPhiProvider.ThemHocPhi(hocphi);
                if (aResult.Result <= 0)
                {
                    aResult.Exceptions.Add(new Exception("Thêm học phí không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }



        public static ActionResult<bool> XoaHocPhi(int maBienLai)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = HocPhiProvider.XoaHocPhi(maBienLai);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Xóa học phí không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }


        public static ActionResult<bool> CapNhatHocPhi(BienLai hocphi)
        {
            var aResult = new ActionResult<bool>();
            try
            {
                aResult.Result = HocPhiProvider.CapNhatHocPhi(hocphi);
                if (!aResult.Result)
                {
                    aResult.Exceptions.Add(new Exception("Cập nhật thông tin học phí không thành công"));
                }
            }
            catch (Exception ex)
            {
                aResult.Exceptions.Add(ex);
            }
            return aResult;
        }


        public ValidationResult Validate(BienLai obj)
        {
            var vResult = new ValidationResult();
            //if (!(obj.NgayThu.CompareTo(DateTime.Now) == 0))
            //{
            //    vResult.Message.Add("Ngày nộp không đúng");
            //}
            if (obj.TienHP<=0)
            {
                vResult.Message.Add("Tiền học phí phải lớn hơn 0");
            }          
            return vResult;
        }
    }
}
